/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package presenter;

import boundary.ListarGerentesView;
import collection.CollectionGerente;
import controladora.AutenticaCliente;
import entity.Gerente;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author jakson
 */
public class ListarGerentePresente {
    
    private ListarGerentesView view;
    private ArrayList<Gerente> agen = new ArrayList<Gerente>();
    private collection.CollectionGerente gerente = new CollectionGerente();
    private AutenticarGerente cliente = new AutenticarGerente();
    Gerente G = new Gerente("", "", "", "", "", "");
    private int WIDTH;
    
    public ListarGerentePresente(String transferir) {
        view = new ListarGerentesView(null, true);
        agen = gerente.getGerentes();
        if (transferir.equals("transferir")) {
            view.getBtnEditar().setVisible(false);
            view.getBtnNovo().setVisible(false);
            view.getBtnExcluir().setVisible(false);
            view.getBtnTransferir().setVisible(true);
            view.getBtnTransferir().addActionListener(new ActionListener() {
                
                @Override
                public void actionPerformed(ActionEvent ae) {
                    transferirGerente();
                }
            });
        }        
        if (transferir.equals("desativar")) {
            view.getBtnEditar().setVisible(false);
            view.getBtnNovo().setVisible(false);
            view.getBtnExcluir().setVisible(false);
            view.getBtnTransferir().setVisible(false);
            view.getBtnDesativar().setVisible(true);
            
            view.getBtnDesativar().addActionListener(new ActionListener() {
                
                @Override
                public void actionPerformed(ActionEvent ae) {
                    desativarAcesso();
                }
            });            
            
            
        } else {
            
            view.getBtnTransferir().setVisible(false);
            view.getBtnDesativar().setVisible(false);
            view.getBtnEditar().addActionListener(new ActionListener() {
                
                @Override
                public void actionPerformed(ActionEvent ae) {
                    editar();
                }
            });
            
            view.getBtnExcluir().addActionListener(new ActionListener() {
                
                @Override
                public void actionPerformed(ActionEvent ae) {
                    excluir();
                }
            });
            
            
            
            view.getBtnNovo().addActionListener(new ActionListener() {
                
                @Override
                public void actionPerformed(ActionEvent ae) {
                    novo();
                }
            });
        }
        view.getBtnFechar().addActionListener(new ActionListener() {
            
            @Override
            public void actionPerformed(ActionEvent ae) {
                fechar();
            }
        });
        
        carregarTabela(agen);
        view.setLocationRelativeTo(view);
        view.setVisible(true);
    }
    
    private void editar() {
        
        
        if (view.getTabelaGerente().getSelectedRow() < 0) {
            JOptionPane.showMessageDialog(null, "selecione uma linha para editar", "ERRo", WIDTH);
        } else {
            
            gerente.editar(view.getTabelaGerente().getValueAt(view.getTabelaGerente().getSelectedRow(), 0).toString());
            
            
        }
        //view.dispose();
    }
    
    private void desativarAcesso() {
        
         if (view.getTabelaGerente().getSelectedRow() < 0) {
            JOptionPane.showMessageDialog(null, "selecione uma linha para editar", "ERRo", WIDTH);
        } else if(JOptionPane.showConfirmDialog(null, "TEM CERTEZA QUE DESEJA DESATIVAR O ACESSO DO CLIENTE", "DESATIVAR GERENTE", 0,3) == 0) {
            
            G = cliente.buscarUsuario(view.getTabelaGerente().getValueAt(view.getTabelaGerente().getSelectedRow(), 4).toString());
            G.setSenha("bloqueada");
            gerente.editacao(G);
            JOptionPane.showMessageDialog(null, "GERENTE BLOQUEADO COM SUCESSO =)");
            
        }
        
    }
    
    private void excluir() {
        
        collection.CollectionGerente gerente = new CollectionGerente();
        if (view.getTabelaGerente().getSelectedRow() < 0) {
            JOptionPane.showMessageDialog(null, "selecione uma linha para excluir", "ERRO", WIDTH);
        } else {
            if (JOptionPane.showConfirmDialog(null, "Tem certeza que realmente deseja excluir a Agência", "Sistema Bancário", 0, 3) == 0) {
                gerente.excluirGerente(view.getTabelaGerente().getValueAt(view.getTabelaGerente().getSelectedRow(), 0).toString());
                view.revalidate();
                
            }
        }
    }
    
    private void novo() {
        //view.dispose();
        new AddGerentePresenter("novo", null);
        
    }
    
    private void transferirGerente() {
        if (view.getTabelaGerente().getSelectedRow() < 0) {
            JOptionPane.showMessageDialog(null, "selecione uma linha para editar", "ERRo", WIDTH);
        } else {
            
            gerente.editarTransferir(view.getTabelaGerente().getValueAt(view.getTabelaGerente().getSelectedRow(), 0).toString());
            
            
        }
        
    }
    
    private void fechar() {
        view.dispose();
    }
    
    private void carregarTabela(ArrayList a) {
        DefaultTableModel tm = new DefaultTableModel(
                new Object[][]{},
                new String[]{"Nome", "Endereço", "Cpf", "Data Nasc.", "Usuário", "Agência"}) {
            
            @Override
            public boolean isCellEditable(int row, int col) {
                return false;
            }
        };
        
        tm.setNumRows(0);
        for (int i = 0; i < a.size(); i++) {
            String linha = (agen.get(i).getNome() + "," + agen.get(i).getEndereco() + "," + agen.get(i).getCpf() + ","
                    + agen.get(i).getDataDeNascimento() + "," + agen.get(i).getUsuario() + "," + agen.get(i).getAgencia());
            String valores[] = linha.split(",");
            tm.addRow(valores);
        }
        
        view.getTabelaGerente().setModel(tm);
        
    }
}
